(function (window, undefined) {
    if (window.utils) {
        throw '已经引入其他utils'
    }
    window.utils = {
        date: {
            /**
             * 日期格式化
             * @param {Number,String,Date} time
             * @param {String} formatStr
             * @returns 2019-08-03 08:30:14
             */
            format: function (time, formatStr) {
                formatStr = formatStr || 'y-m-d h:M:s';
                if (!time) {
                    return time;
                }
                //数字 和 字符串 时间戳   或者 Date对象 统一转为时间戳字符串 
                var timeStr = +time + '';
                var reg = /^\d{10,13}$/;
                if (!reg.test(timeStr)) {
                    return time;
                }
                // 如果不是13位时间戳 转为13位 ps:js 需要13位时间戳
                if (timeStr.length !== 13) {
                    time *= 1000;
                }
                // 转为日期对象 调用日期方法
                time = new Date(time);
                // 补零函数
                function addZero(params) {
                    return parseInt(params) >= 10 ? params : "0" + params;
                };
                // var y = time.getFullYear();
                // var m = addZero(time.getMonth() + 1);
                // var d = addZero(time.getDate());
                // var h = addZero(time.getHours());
                // var M = addZero(time.getMinutes());
                // var s = addZero(time.getSeconds());
                var obj = {
                    y: time.getFullYear(),
                    m: addZero(time.getMonth() + 1),
                    d: addZero(time.getDate()),
                    h: addZero(time.getHours()),
                    M: addZero(time.getMinutes()),
                    s: addZero(time.getSeconds()),
                };
                // 日期替换正则
                var reg2 = /y|m|d|h|M|s/g;
                var outStr = formatStr.replace(reg2, function ($0, $1) {
                    return obj[$0] ? obj[$0] : $0;
                });
                return outStr;
            }
        },
        isType: function (params) {
            return Object.prototype.toString.call(params).slice(8, -1).toLowerCase();
        },
        /*检测字符串*/
        //checkType('165226226326','phone')
        //false
        //大家可以根据需要扩展
        checkType: function (str, type) {
            switch (type) {
                case 'email':
                    return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
                case 'phone':
                    return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
                case 'tel':
                    return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
                case 'number':
                    return /^[0-9]+$/.test(str);
                case 'english':
                    return /^[a-zA-Z]+$/.test(str);
                case 'chinese':
                    return /^[\u4E00-\u9FA5]+$/.test(str);
                case 'lower':
                    return /^[a-z]+$/.test(str);
                case 'upper':
                    return /^[A-Z]+$/.test(str);
                default:
                    return true;
            }
        },
    };
    // toJSONInitParse begin
    var _stringify = JSON.stringify;
    JSON.stringify = function () {
        if (arguments.length == 1) {
            return _stringify(arguments[0], null, 2);
        }
        else {
            return _stringify.apply(this, arguments);
        }
    };
    // toJSONInitParse end
})(window);


